//
//  Comunicacion.m
//  Pico y placa
//
//  Created by DmpmMacPro on 31/12/12.
//  Copyright (c) 2012 Mario Franco. All rights reserved.
//

#import "Comunicacion.h"
#import "Reachability.h"
#import "FileDownloader.h"

@implementation Comunicacion
int descargasPendientes = 0;
Boolean descHorarios;
Boolean descTipos;
Boolean descRestricciones;

FileDownloader *fileDownloader;

- (id)init
{
    self = [super init];
    if (self) {
        descargasPendientes = 0;
        fileDownloader = [[FileDownloader alloc]init];
        descHorarios = NO;
        descRestricciones = NO;
        descTipos = NO;
    }
    return self;
}

+ (BOOL) hayConexion
{
    Reachability *networkReachability = [Reachability reachabilityForInternetConnection];
    NetworkStatus networkStatus = [networkReachability currentReachabilityStatus];
    
    BOOL conex = networkStatus != NotReachable;
    
    return conex;
}


- (NSDictionary *) darVersionesDeArchivos
{
    //NSDictionary * dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@"http://francoal.com.co/pico/version.txt"]];
    NSDictionary * dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@"https://www.dropbox.com/s/m1malnywr37bzgu/version.txt?dl=1"]];
    //NSDictionary * dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@"http://www.idemovil.com/testFolder/version.txt"]];
    NSLog(@"Impresión %@", dict);
    return dict;
}

- (BOOL) actualizarTablasLocales: (NSDictionary *) dictActuales
{
    NSDictionary * dictInternet = [self darVersionesDeArchivos];
    BOOL encontroDiferencia = NO;
    
    
    if(!descHorarios && [[dictInternet objectForKey:@"Horarios"] integerValue] != [[dictActuales objectForKey:@"Horarios"] integerValue])
    {
        descargasPendientes++;
        encontroDiferencia = YES;
        //[self actualizarArchivoTest:@"Horarios"];
        descHorarios = YES;
        [NSThread detachNewThreadSelector:@selector(actualizarArchivo:) toTarget:self withObject:@"Horarios"];
    }
    
    if(!descRestricciones && [[dictInternet objectForKey:@"Restricciones"] integerValue] !=[[dictActuales objectForKey:@"Restricciones"] integerValue])
    {
        descargasPendientes++;
        encontroDiferencia = YES;
        descRestricciones = YES;
        [NSThread detachNewThreadSelector:@selector(actualizarArchivo:) toTarget:self withObject:@"Restricciones"];
        // [self actualizarArchivoTest:@"Restricciones"];
    }
    
    if(!descTipos && [[dictInternet objectForKey:@"Tipos_vehiculos"] integerValue] != [[dictActuales objectForKey:@"Tipos_vehiculos"] integerValue])
    {
        descargasPendientes++;
        encontroDiferencia = YES;
        descTipos = YES;
        [NSThread detachNewThreadSelector:@selector(actualizarArchivo:) toTarget:self withObject:@"Tipos_vehiculos"];
        // [self actualizarArchivoTest:@"Tipos_vehiculos"];
    }
    
    while (descargasPendientes != 0)//[fileDownloader hayDescargasPendientes])
    {
        // NSLog(@"Esperando");
        // [NSThread sleepForTimeInterval:1];
        [NSThread sleepForTimeInterval:0.03];
    }
    if(dictInternet)
    {
        [dictActuales setValue:[dictInternet objectForKey:@"Horarios"] forKey:@"Horarios"];
        [dictActuales setValue:[dictInternet objectForKey:@"Restricciones"] forKey:@"Restricciones"];
        [dictActuales setValue:[dictInternet objectForKey:@"Tipos_vehiculos"] forKey:@"Tipos_vehiculos"];
    }
    return  encontroDiferencia;
}


- (BOOL) actualizarArchivo:(NSString *) nombreArchivo
{
    NSData * data = nil;
    
    NSLog(@"Intenta actualizar %@",nombreArchivo);
    
    /*
     if([nombreArchivo isEqualToString:@"Horarios"])
     {
     
     data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.idemovil.com/testFolder/Horarios.csv"]];
     }
     else if([nombreArchivo isEqualToString:@"Restricciones"])
     {
     data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.idemovil.com/testFolder/Restricciones.csv"]];
     }
     else if([nombreArchivo isEqualToString:@"Tipos_vehiculos"])
     {
     data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.idemovil.com/testFolder/Tipos_vehiculos.csv"]];
     }
     */
    if([nombreArchivo isEqualToString:@"Horarios"])
    {
        
        data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://www.dropbox.com/s/pw1dssueyvfiulm/Horarios.csv?dl=1"]];
    }
    else if([nombreArchivo isEqualToString:@"Restricciones"])
    {
        data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://www.dropbox.com/s/l6d86mfzs0rm57q/Restricciones.csv?dl=1"]];
    }
    else if([nombreArchivo isEqualToString:@"Tipos_vehiculos"])
    {
        data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://www.dropbox.com/s/6fbw3nfu134kdg7/Tipos_vehiculos.csv?dl=1"]];
    }
    
    
    NSString * path = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/%@.csv",nombreArchivo]];
    //[[NSBundle mainBundle] pathForResource:nombreArchivo ofType:@"csv"];
    
    BOOL termino = [data writeToFile:path atomically:NO];
    
    descargasPendientes--;
    
    if([nombreArchivo isEqualToString:@"Horarios"])
    {
        descHorarios = NO;
    }
    else if([nombreArchivo isEqualToString:@"Restricciones"])
    {
        descRestricciones = NO;
    }
    else if([nombreArchivo isEqualToString:@"Tipos_vehiculos"])
    {
        descTipos = NO;
    }
    NSLog(@"termino %@ con exito %d", nombreArchivo, termino);
    return  termino;
    
}

- (BOOL) actualizarArchivoTest:(NSString *) nombreArchivo
{
    NSLog(@"Intenta descargar %@",nombreArchivo);
    
    [fileDownloader descargarArchivoConURL:@"http://www.stluciadance.com/prospectus_file/sample.pdf" conNombre:@"Sample" conDestino:[[NSBundle mainBundle] pathForResource:nombreArchivo ofType:@"pdf"]];
    
    
    
    if([nombreArchivo isEqualToString:@"Horarios"])
    {
        [fileDownloader descargarArchivoConURL:@"https://www.dropbox.com/s/pw1dssueyvfiulm/Horarios.csv?dl=1" conNombre:@"Horarios" conDestino:[[NSBundle mainBundle] pathForResource:nombreArchivo ofType:@"csv"]];
    }
    else if([nombreArchivo isEqualToString:@"Restricciones"])
    {
        [fileDownloader descargarArchivoConURL:@"https://www.dropbox.com/s/l6d86mfzs0rm57q/Restricciones.csv?dl=1" conNombre:@"Restricciones" conDestino:[[NSBundle mainBundle] pathForResource:nombreArchivo ofType:@"csv"]];
    }
    else if([nombreArchivo isEqualToString:@"Tipos_vehiculos"])
    {
        [fileDownloader descargarArchivoConURL:@"https://www.dropbox.com/s/6fbw3nfu134kdg7/Tipos_vehiculos.csv?dl=1" conNombre:@"Tipos_vehiculos" conDestino:[[NSBundle mainBundle] pathForResource:nombreArchivo ofType:@"csv"]];
    }
    
    return YES;
    
}



@end
